package model

type Task struct {
	Index     int    `yaml:"index"`
	Name      string `yaml:"name"`
	Timeout   int    `yaml:"timeout"` // -1表示不限制
	Command   string `yaml:"command"`
	Src       string `yaml:"src"`
	Dst       string `yaml:"dst"`
	Fetch     bool   `yaml:"fetch"` // 是否从远程主机拉取文件
	AllowFail bool   `yaml:"allow_fail"`
	Override  bool   `yaml:"override"`   // 文件是否强制覆盖，默认为false
	RecordKey string `yaml:"record_key"` // 如果有配置，表示需要记录状态，已经执行成功，则会跳过， job内唯一
	Check     string `yaml:"check"`      // 坚持命令，循环检查，知道成功或者超时
	CacheKey  string `yaml:"cache_key"`  // 缓存命令的结果作为全局变量
	Echo      string `yaml:"echo"`       // 打印文本
}

type Job struct {
	Index     int      `yaml:"index"`
	Name      string   `yaml:"name"`
	Timeout   int      `yaml:"timeout"`
	Tasks     []*Task  `yaml:"tasks"`
	Hosts     []string `yaml:"hosts"`      // 主机名称或者主机的标签
	Parallel  bool     `yaml:"parallel"`   // 是否可以并行，多主机并行
	RecordKey string   `yaml:"record_key"` // 必须要有该值，全局唯一
}
